// 1.引入express模块
const express = require('express');
const { send } = require('process');

// 2.引入连接池模块
const pool = require('../pool.js')

// 3.因为要打包暴露出去,所以要创建一个路由对象
const router = express.Router();

/*******************接口逻辑******************/
//接口1:获取对应用户的购物车内的商品信息
//请求方法:post
//后台请求地址:/find
//前台访问地址:/shopcart/find
//需要获取请求:req.body
//需要对数据库进行“插入”
//sql:`select * from product where pid in (select proid from cart_details where cid = (select cid from shopping_cart where user_id = ?));`因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/find', (req, res, next) => {
    var obj = req.body
    pool.query('select * from product where pid in (select proid from cart_details where cid = (select cid from shopping_cart where user_id = ?));', [obj.uid], (err, data) => {
        if (err) { next(err); return; }
        if (data.length) {
            res.send({
                code: 200,
                msg: '成功获取到该用户购物车中的数据',
                result: data
            })
        } else {
            res.send({
                code: 400,
                msg: '未能获取到该用户购物车的数据'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口2:获取对应用户的购物车内的商品信息
//请求方法:post
//后台请求地址:/add
//前台访问地址:/shopcart/add
//需要获取请求:req.body
//需要对数据库进行“插入”
//sql:``因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/add', (req, res, next) => {
    var obj = req.body
    // console.log(obj);
    //obj.cid购物车id(注册后初始化用户购物车)   obj.proid商品id
    pool.query('INSERT into cart_details values(DEFAULT,?,?,null,1);', [obj.cid, obj.proid], (err, data) => {
        if (err) { next(err); return; }
        if (data.affectedRows) {
            res.send({
                code: 201,
                msg: '成功向用户购物车中插入数据',
                result: data
            })
        } else {
            res.send({
                code: 401,
                msg: '插入商品数据失败'
            })
        }
    })
})


/*******************接口逻辑******************/
//接口3:获取对应用户的购物车内的商品信息
//请求方法:delete
//后台请求地址:/del
//前台访问地址:/shopcart/del
//需要获取请求:req.body
//需要对数据库进行“插入”
//sql:``因为这个插入的SQL过于长，并且需要指定字段，因此使用注入的方式更简单
/*响应结果：
{code:1,msg:'成功插入一条数据'}
{code:0,msg:'插入失败'}
*/
router.post('/del', (req, res, next) => {
    var obj = req.body
    console.log(obj);
    //obj.cid购物车id(注册后初始化用户购物车)   obj.proid商品id
    pool.query('delete from cart_details where cdid = ?;', [obj.cdid], (err, data) => {
        if (err) { next(err); return; }
        if (data.affectedRows) {
            res.send({
                code: 202,
                msg: '成功移除购物车中一条数据',
                result: data
            })
        } else {
            res.send({
                code: 402,
                msg: '删除商品数据失败'
            })
        }
    })
})


// 4.暴露路由(user)对象
module.exports = router;